1 /** 2 hdf5.bindings.api 3 4 Low level C API declarations 5 6 D Language bindings to the HDF5 Library. (Paired with a set of high-level wrappers) 7 https://github.com/Laeeth/d_hdf5 8 No restriction on use beyond those applying from HDF5 and the original C API by Stefan Frijters 9 However, if you use them, I would not mind knowing your application and suggestions for 10 improvement if you feel like sharing. laeeth@laeeth.com 11 12 13 14 Copyright by The HDF Group. * 15 Copyright by the Board of Trustees of the University of Illinois. * 16 All rights reserved. * 17 * 18 This file is part of HDF5. The full HDF5 copyright notice, including * 19 terms governing use, modification, and redistribution, is contained in * 20 the files COPYING and Copyright.html. COPYING can be found at the root * 21 of the source code distribution tree; Copyright.html can be found at the * 22 root level of an installed copy of the electronic HDF5 document set and * 23 is linked from the top-level documents page. It can also be found at * 24 http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * 25 access to either file, you may request a copy from help@hdfgroup.org. * 26 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 27 Ported to D by Laeeth Isharc 2014 28 Borrowed heavily in terms of C API declarations from https://github.com/SFrijters/hdf5-d 29 Stefan Frijters bindings for D 30 31 Bindings probably not yet complete or bug-free. 32 33 Consider this not even alpha stage. It probably isn't so far away from being useful though. 34 This is written for Linux and will need modification to work on other platforms. 35 */ 36 37 module hdf5.bindings.api; 38 public import core.stdc.stdint; 39 public import core.sys.posix.sys.types: off_t; 40 public import core.stdc.time; 41 public import core.stdc.stdint; 42 import std.conv; 43 import std..string; 44 import std.array; 45 import std.stdio; 46 import hdf5.bindings.enums; 47 48 auto H5check() { 49 return H5check_version(H5_VERS_MAJOR,H5_VERS_MINOR, H5_VERS_RELEASE); 50 } 51 52 /* macros for comparing the version */ 53 bool H5_VERSION_GE(Maj,Min,Rel)() { 54 return (((H5_VERS_MAJOR==Maj) && (H5_VERS_MINOR==Min) && (H5_VERS_RELEASE>=Rel)) || 55 ((H5_VERS_MAJOR==Maj) && (H5_VERS_MINOR>Min)) || 56 (H5_VERS_MAJOR>Maj)); 57 } 58 59 bool H5_VERSION_LE(Maj,Min,Rel)() { 60 return (((H5_VERS_MAJOR==Maj) && (H5_VERS_MINOR==Min) && (H5_VERS_RELEASE<=Rel)) || 61 ((H5_VERS_MAJOR==Maj) && (H5_VERS_MINOR<Min)) || 62 (H5_VERS_MAJOR<Maj)); 63 } 64 version(Posix) 65 { 66 extern(C) 67 { 68 herr_t H5open(); 69 herr_t H5close(); 70 herr_t H5dont_atexit(); 71 herr_t H5garbage_collect(); 72 herr_t H5set_free_list_limits (int reg_global_lim, int reg_list_lim, 73 int arr_global_lim, int arr_list_lim, int blk_global_lim, int blk_list_lim); 74 herr_t H5get_libversion(uint *majnum, uint *minnum, uint *relnum); 75 herr_t H5check_version(uint majnum, uint minnum, uint relnum); 76 herr_t H5free_memory(void *mem); 77 } 78 } 79 80 /* Define the operator function pointer for H5Diterate() */ 81 extern(C) 82 { 83 hid_t H5Dcreate2(hid_t loc_id, const char *name, hid_t type_id, 84 hid_t space_id, hid_t lcpl_id, hid_t dcpl_id, hid_t dapl_id); 85 hid_t H5Dcreate_anon(hid_t file_id, hid_t type_id, hid_t space_id, hid_t plist_id, hid_t dapl_id); 86 hid_t H5Dopen2(hid_t file_id, const char *name, hid_t dapl_id); 87 herr_t H5Dclose(hid_t dset_id); 88 hid_t H5Dget_space(hid_t dset_id); 89 herr_t H5Dget_space_status(hid_t dset_id, H5DSpaceStatus *allocation); 90 hid_t H5Dget_type(hid_t dset_id); 91 hid_t H5Dget_create_plist(hid_t dset_id); 92 hid_t H5Dget_access_plist(hid_t dset_id); 93 hsize_t H5Dget_storage_size(hid_t dset_id); 94 haddr_t H5Dget_offset(hid_t dset_id); 95 herr_t H5Dread(hid_t dset_id, hid_t mem_type_id, hid_t mem_space_id, hid_t file_space_id, hid_t plist_id, void *buf/*out*/); 96 herr_t H5Dwrite(hid_t dset_id, hid_t mem_type_id, hid_t mem_space_id, hid_t file_space_id, hid_t plist_id, const void *buf); 97 herr_t H5Diterate(void *buf, hid_t type_id, hid_t space_id, H5D_operator_t op, void *operator_data); 98 herr_t H5Dvlen_reclaim(hid_t type_id, hid_t space_id, hid_t plist_id, void *buf); 99 herr_t H5Dvlen_get_buf_size(hid_t dataset_id, hid_t type_id, hid_t space_id, hsize_t *size); 100 herr_t H5Dfill(const void *fill, hid_t fill_type, void *buf, hid_t buf_type, hid_t space); 101 herr_t H5Dset_extent(hid_t dset_id, const hsize_t* size); 102 herr_t H5Dscatter(H5D_scatter_func_t op, void *op_data, hid_t type_id, hid_t dst_space_id, void *dst_buf); 103 herr_t H5Dgather(hid_t src_space_id, const void *src_buf, hid_t type_id, size_t dst_buf_size, void *dst_buf, H5D_gather_func_t op, void *op_data); 104 herr_t H5Ddebug(hid_t dset_id); 105 } 106 extern(C) 107 { 108 // Public function prototypes 109 110 hid_t H5Acreate2(hid_t loc_id, const char *attr_name, hid_t type_id, hid_t space_id, hid_t acpl_id, hid_t aapl_id); 111 hid_t H5Acreate_by_name(hid_t loc_id, const char *obj_name, const char *attr_name, 112 hid_t type_id, hid_t space_id, hid_t acpl_id, hid_t aapl_id, hid_t lapl_id); 113 hid_t H5Aopen(hid_t obj_id, const char *attr_name, hid_t aapl_id); 114 hid_t H5Aopen_by_name(hid_t loc_id, const char *obj_name, const char *attr_name, hid_t aapl_id, hid_t lapl_id); 115 hid_t H5Aopen_by_idx(hid_t loc_id, const char *obj_name, H5Index idx_type, H5IterOrder order, hsize_t n, hid_t aapl_id, 116 hid_t lapl_id); 117 herr_t H5Awrite(hid_t attr_id, hid_t type_id, const void *buf); 118 herr_t H5Aread(hid_t attr_id, hid_t type_id, void *buf); 119 herr_t H5Aclose(hid_t attr_id); 120 hid_t H5Aget_space(hid_t attr_id); 121 hid_t H5Aget_type(hid_t attr_id); 122 hid_t H5Aget_create_plist(hid_t attr_id); 123 ssize_t H5Aget_name(hid_t attr_id, size_t buf_size, char *buf); 124 ssize_t H5Aget_name_by_idx(hid_t loc_id, const char *obj_name, H5Index idx_type, H5IterOrder order, hsize_t n, 125 char *name /*out*/, size_t size, hid_t lapl_id); 126 hsize_t H5Aget_storage_size(hid_t attr_id); 127 herr_t H5Aget_info(hid_t attr_id, H5A_info_t *ainfo /*out*/); 128 herr_t H5Aget_info_by_name(hid_t loc_id, const char *obj_name, const char *attr_name, H5A_info_t *ainfo /*out*/, hid_t lapl_id); 129 herr_t H5Aget_info_by_idx(hid_t loc_id, const char *obj_name, H5Index idx_type, H5IterOrder order, hsize_t n, 130 H5A_info_t *ainfo /*out*/, hid_t lapl_id); 131 herr_t H5Arename(hid_t loc_id, const char *old_name, const char *new_name); 132 herr_t H5Arename_by_name(hid_t loc_id, const char *obj_name, const char *old_attr_name, const char *new_attr_name, hid_t lapl_id); 133 herr_t H5Aiterate2(hid_t loc_id, H5Index idx_type, H5IterOrder order, hsize_t *idx, H5A_operator2_t op, void *op_data); 134 herr_t H5Aiterate_by_name(hid_t loc_id, const char *obj_name, H5Index idx_type, H5IterOrder order, hsize_t *idx, 135 H5A_operator2_t op, void *op_data, hid_t lapd_id); 136 herr_t H5Adelete(hid_t loc_id, const char *name); 137 herr_t H5Adelete_by_name(hid_t loc_id, const char *obj_name, const char *attr_name, hid_t lapl_id); 138 herr_t H5Adelete_by_idx(hid_t loc_id, const char *obj_name, H5Index idx_type, H5IterOrder order, hsize_t n, hid_t lapl_id); 139 htri_t H5Aexists(hid_t obj_id, const char *attr_name); 140 htri_t H5Aexists_by_name(hid_t obj_id, const char *obj_name, const char *attr_name, hid_t lapl_id); 141 } 142 143 /* Global var whose value comes from environment variable */ 144 /* (Defined in H5FDmpio.c) */ 145 extern __gshared hbool_t H5FD_mpi_opt_types_g; 146 147 extern(C) 148 { 149 /* Function prototypes */ 150 hid_t H5FD_mpio_init(); 151 void H5FD_mpio_term(); 152 herr_t H5Pset_fapl_mpio(hid_t fapl_id, MPI_Comm comm, MPI_Info info); 153 herr_t H5Pget_fapl_mpio(hid_t fapl_id, MPI_Comm *comm/*out*/, MPI_Info *info/*out*/); 154 herr_t H5Pset_dxpl_mpio(hid_t dxpl_id, H5FDMPIO xfer_mode); 155 herr_t H5Pget_dxpl_mpio(hid_t dxpl_id, H5FDMPIO *xfer_mode/*out*/); 156 herr_t H5Pset_dxpl_mpio_collective_opt(hid_t dxpl_id, H5FDMPIO opt_mode); 157 herr_t H5Pset_dxpl_mpio_chunk_opt(hid_t dxpl_id, H5FDMPIOChunkOptions opt_mode); 158 herr_t H5Pset_dxpl_mpio_chunk_opt_num(hid_t dxpl_id, uint num_chunk_per_proc); 159 herr_t H5Pset_dxpl_mpio_chunk_opt_ratio(hid_t dxpl_id, uint percent_num_proc_per_chunk); 160 } 161 162 163 164 extern(C) 165 { 166 htri_t H5Fis_hdf5(const char *filename); 167 hid_t H5Fcreate(const char *filename, uint flags, hid_t create_plist, hid_t access_plist); 168 hid_t H5Fopen(const char *filename, uint flags, hid_t access_plist); 169 hid_t H5Freopen(hid_t file_id); 170 herr_t H5Fflush(hid_t object_id, H5F_scope_t _scope); 171 herr_t H5Fclose(hid_t file_id); 172 hid_t H5Fget_create_plist(hid_t file_id); 173 hid_t H5Fget_access_plist(hid_t file_id); 174 herr_t H5Fget_intent(hid_t file_id, uint * intent); 175 ssize_t H5Fget_obj_count(hid_t file_id, uint types); 176 ssize_t H5Fget_obj_ids(hid_t file_id, uint types, size_t max_objs, hid_t *obj_id_list); 177 herr_t H5Fget_vfd_handle(hid_t file_id, hid_t fapl, void **file_handle); 178 herr_t H5Fmount(hid_t loc, const char *name, hid_t child, hid_t plist); 179 herr_t H5Funmount(hid_t loc, const char *name); 180 hssize_t H5Fget_freespace(hid_t file_id); 181 herr_t H5Fget_filesize(hid_t file_id, hsize_t *size); 182 ssize_t H5Fget_file_image(hid_t file_id, void * buf_ptr, size_t buf_len); 183 herr_t H5Fget_mdc_hit_rate(hid_t file_id, double * hit_rate_ptr); 184 herr_t H5Fget_mdc_size(hid_t file_id, size_t * max_size_ptr, size_t * min_clean_size_ptr, size_t * cur_size_ptr, int * cur_num_entries_ptr); 185 herr_t H5Freset_mdc_hit_rate_stats(hid_t file_id); 186 ssize_t H5Fget_name(hid_t obj_id, char *name, size_t size); 187 herr_t H5Fget_info(hid_t obj_id, H5F_info_t *bh_info); 188 herr_t H5Fclear_elink_file_cache(hid_t file_id); 189 version(h5parallel) herr_t H5Fset_mpi_atomicity(hid_t file_id, hbool_t flag); 190 version(h5parallel) herr_t H5Fget_mpi_atomicity(hid_t file_id, hbool_t *flag); 191 version(h5parallel) alias H5FD_MPIO=H5FD_mpio_init; 192 } 193 extern(C) 194 { 195 hid_t H5Gcreate2(hid_t loc_id, const char *name, hid_t lcpl_id, hid_t gcpl_id, hid_t gapl_id); 196 hid_t H5Gcreate_anon(hid_t loc_id, hid_t gcpl_id, hid_t gapl_id); 197 hid_t H5Gopen2(hid_t loc_id, const char *name, hid_t gapl_id); 198 hid_t H5Gget_create_plist(hid_t group_id); 199 herr_t H5Gget_info(hid_t loc_id, H5GInfo *ginfo); 200 herr_t H5Gget_info_by_name(hid_t loc_id, const(char *)name, H5GInfo *ginfo, hid_t lapl_id); 201 herr_t H5Gget_info_by_idx(hid_t loc_id, const(char *)group_name, H5Index idx_type, H5IterOrder order, hsize_t n, H5GInfo *ginfo, hid_t lapl_id); 202 herr_t H5Gclose(hid_t group_id); 203 } 204 205 extern(C) 206 { 207 hid_t H5Iregister(H5IType type, const void *object); 208 void *H5Iobject_verify(hid_t id, H5IType id_type); 209 void *H5Iremove_verify(hid_t id, H5IType id_type); 210 H5IType H5Iget_type(hid_t id); 211 hid_t H5Iget_file_id(hid_t id); 212 ssize_t H5Iget_name(hid_t id, char *name/*out*/, size_t size); 213 int H5Iinc_ref(hid_t id); 214 int H5Idec_ref(hid_t id); 215 int H5Iget_ref(hid_t id); 216 H5IType H5Iregister_type(size_t hash_size, uint reserved, H5I_free_t free_func); 217 herr_t H5Iclear_type(H5IType type, hbool_t force); 218 herr_t H5Idestroy_type(H5IType type); 219 int H5Iinc_type_ref(H5IType type); 220 int H5Idec_type_ref(H5IType type); 221 int H5Iget_type_ref(H5IType type); 222 void *H5Isearch(H5IType type, H5I_search_func_t func, void *key); 223 herr_t H5Inmembers(H5IType type, hsize_t *num_members); 224 htri_t H5Itype_exists(H5IType type); 225 htri_t H5Iis_valid(hid_t id); 226 } 227 extern(C) 228 { 229 herr_t H5Lmove(hid_t src_loc, const char *src_name, hid_t dst_loc, const char *dst_name, hid_t lcpl_id, hid_t lapl_id); 230 herr_t H5Lcopy(hid_t src_loc, const char *src_name, hid_t dst_loc, const char *dst_name, hid_t lcpl_id, hid_t lapl_id); 231 herr_t H5Lcreate_hard(hid_t cur_loc, const char *cur_name, hid_t dst_loc, const char *dst_name, hid_t lcpl_id, hid_t lapl_id); 232 herr_t H5Lcreate_soft(const char *link_target, hid_t link_loc_id, const char *link_name, hid_t lcpl_id, hid_t lapl_id); 233 herr_t H5Ldelete(hid_t loc_id, const char *name, hid_t lapl_id); 234 herr_t H5Ldelete_by_idx(hid_t loc_id, const char *group_name, H5Index idx_type, H5IterOrder order, hsize_t n, hid_t lapl_id); 235 herr_t H5Lget_val(hid_t loc_id, const char *name, void *buf/*out*/, size_t size, hid_t lapl_id); 236 herr_t H5Lget_val_by_idx(hid_t loc_id, const char *group_name, H5Index idx_type, H5IterOrder order, hsize_t n, void *buf/*out*/, size_t size, hid_t lapl_id); 237 htri_t H5Lexists(hid_t loc_id, const char *name, hid_t lapl_id); 238 herr_t H5Lget_info(hid_t loc_id, const char *name, H5LInfo *linfo /*out*/, hid_t lapl_id); 239 herr_t H5Lget_info_by_idx(hid_t loc_id, const char *group_name, H5Index idx_type, H5IterOrder order, hsize_t n, H5LInfo *linfo /*out*/, hid_t lapl_id); ssize_t H5Lget_name_by_idx(hid_t loc_id, const char *group_name, H5Index idx_type, H5IterOrder order, hsize_t n, char *name /*out*/, size_t size, hid_t lapl_id); 240 herr_t H5Literate(hid_t grp_id, H5Index idx_type, H5IterOrder order, hsize_t *idx, H5L_iterate_t op, void *op_data); 241 herr_t H5Literate_by_name(hid_t loc_id, const char *group_name, H5Index idx_type, H5IterOrder order, hsize_t *idx, H5L_iterate_t op, void *op_data, hid_t lapl_id); 242 herr_t H5Lvisit(hid_t grp_id, H5Index idx_type, H5IterOrder order, H5L_iterate_t op, void *op_data); 243 herr_t H5Lvisit_by_name(hid_t loc_id, const char *group_name, H5Index idx_type, H5IterOrder order, H5L_iterate_t op, void *op_data, hid_t lapl_id); 244 245 /* UD link functions */ 246 herr_t H5Lcreate_ud(hid_t link_loc_id, const char *link_name, H5LType link_type, const void *udata, size_t udata_size, hid_t lcpl_id, hid_t lapl_id); 247 herr_t H5Lregister(const H5L_class_t *cls); 248 herr_t H5Lunregister(H5LType id); 249 htri_t H5Lis_registered(H5LType id); 250 251 /* External link functions */ 252 herr_t H5Lunpack_elink_val(const void *ext_linkval/*in*/, size_t link_size, uint *flags, const char **filename/*out*/, const char **obj_path /*out*/); 253 herr_t H5Lcreate_external(const char *file_name, const char *obj_name, hid_t link_loc_id, const char *link_name, hid_t lcpl_id, hid_t lapl_id); 254 } 255 256 257 extern(C) 258 { 259 hid_t H5Oopen(hid_t loc_id, const char *name, hid_t lapl_id); 260 hid_t H5Oopen_by_addr(hid_t loc_id, haddr_t addr); 261 hid_t H5Oopen_by_idx(hid_t loc_id, const char *group_name, H5Index idx_type, H5IterOrder order, hsize_t n, hid_t lapl_id); 262 htri_t H5Oexists_by_name(hid_t loc_id, const char *name, hid_t lapl_id); 263 herr_t H5Oget_info(hid_t loc_id, H5OInfo *oinfo); 264 herr_t H5Oget_info_by_name(hid_t loc_id, const (char *)name, H5OInfo *oinfo, hid_t lapl_id); 265 herr_t H5Oget_info_by_idx(hid_t loc_id, const char *group_name, H5Index idx_type, H5IterOrder order, hsize_t n, H5OInfo *oinfo, hid_t lapl_id); 266 herr_t H5Olink(hid_t obj_id, hid_t new_loc_id, const char *new_name, hid_t lcpl_id, hid_t lapl_id); 267 herr_t H5Oincr_refcount(hid_t object_id); 268 herr_t H5Odecr_refcount(hid_t object_id); 269 herr_t H5Ocopy(hid_t src_loc_id, const char *src_name, hid_t dst_loc_id, const char *dst_name, hid_t ocpypl_id, hid_t lcpl_id); 270 herr_t H5Oset_comment(hid_t obj_id, const char *comment); 271 herr_t H5Oset_comment_by_name(hid_t loc_id, const char *name, const char *comment, hid_t lapl_id); 272 ssize_t H5Oget_comment(hid_t obj_id, char *comment, size_t bufsize); 273 ssize_t H5Oget_comment_by_name(hid_t loc_id, const char *name, char *comment, size_t bufsize, hid_t lapl_id); 274 herr_t H5Ovisit(hid_t obj_id, H5Index idx_type, H5IterOrder order, H5O_iterate_t op, void *op_data); 275 herr_t H5Ovisit_by_name(hid_t loc_id, const char *obj_name, H5Index idx_type, H5IterOrder order, H5O_iterate_t op, void *op_data, hid_t lapl_id); 276 herr_t H5Oclose(hid_t object_id); 277 /*****************/ 278 /* Public Macros */ 279 /*****************/ 280 281 /* 282 * The library's property list classes 283 */ 284 alias H5P_ROOT =H5P_CLS_ROOT_ID_g; 285 alias H5P_OBJECT_CREATE =H5P_CLS_OBJECT_CREATE_ID_g; 286 alias H5P_FILE_CREATE =H5P_CLS_FILE_CREATE_ID_g; 287 alias H5P_FILE_ACCESS =H5P_CLS_FILE_ACCESS_ID_g; 288 alias H5P_DATASET_CREATE = H5P_CLS_DATASET_CREATE_ID_g; 289 alias H5P_DATASET_ACCESS = H5P_CLS_DATASET_ACCESS_ID_g; 290 alias H5P_DATASET_XFER = H5P_CLS_DATASET_XFER_ID_g; 291 alias H5P_FILE_MOUNT =H5P_CLS_FILE_MOUNT_ID_g; 292 alias H5P_GROUP_CREATE =H5P_CLS_GROUP_CREATE_ID_g; 293 alias H5P_GROUP_ACCESS =H5P_CLS_GROUP_ACCESS_ID_g; 294 alias H5P_DATATYPE_CREATE = H5P_CLS_DATATYPE_CREATE_ID_g; 295 alias H5P_DATATYPE_ACCESS = H5P_CLS_DATATYPE_ACCESS_ID_g; 296 alias H5P_STRING_CREATE =H5P_CLS_STRING_CREATE_ID_g; 297 alias H5P_ATTRIBUTE_CREATE = H5P_CLS_ATTRIBUTE_CREATE_ID_g; 298 alias H5P_OBJECT_COPY =H5P_CLS_OBJECT_COPY_ID_g; 299 alias H5P_LINK_CREATE =H5P_CLS_LINK_CREATE_ID_g; 300 alias H5P_LINK_ACCESS =H5P_CLS_LINK_ACCESS_ID_g; 301 302 /* 303 * The library's default property lists 304 */ 305 alias H5P_FILE_CREATE_DEFAULT =H5P_LST_FILE_CREATE_ID_g; 306 alias H5P_FILE_ACCESS_DEFAULT =H5P_LST_FILE_ACCESS_ID_g; 307 alias H5P_DATASET_CREATE_DEFAULT = H5P_LST_DATASET_CREATE_ID_g; 308 alias H5P_DATASET_ACCESS_DEFAULT = H5P_LST_DATASET_ACCESS_ID_g; 309 alias H5P_DATASET_XFER_DEFAULT =H5P_LST_DATASET_XFER_ID_g; 310 alias H5P_FILE_MOUNT_DEFAULT = H5P_LST_FILE_MOUNT_ID_g; 311 alias H5P_GROUP_CREATE_DEFAULT =H5P_LST_GROUP_CREATE_ID_g; 312 alias H5P_GROUP_ACCESS_DEFAULT =H5P_LST_GROUP_ACCESS_ID_g; 313 alias H5P_DATATYPE_CREATE_DEFAULT= H5P_LST_DATATYPE_CREATE_ID_g; 314 alias H5P_DATATYPE_ACCESS_DEFAULT = H5P_LST_DATATYPE_ACCESS_ID_g; 315 alias H5P_ATTRIBUTE_CREATE_DEFAULT = H5P_LST_ATTRIBUTE_CREATE_ID_g; 316 alias H5P_OBJECT_COPY_DEFAULT =H5P_LST_OBJECT_COPY_ID_g; 317 alias H5P_LINK_CREATE_DEFAULT =H5P_LST_LINK_CREATE_ID_g; 318 alias H5P_LINK_ACCESS_DEFAULT =H5P_LST_LINK_ACCESS_ID_g; 319 320 extern __gshared hid_t H5P_CLS_ROOT_g; 321 extern __gshared hid_t H5P_CLS_OBJECT_CREATE_g; 322 extern __gshared hid_t H5P_CLS_FILE_CREATE_g; 323 extern __gshared hid_t H5P_CLS_FILE_ACCESS_g; 324 extern __gshared hid_t H5P_CLS_DATASET_CREATE_g; 325 extern __gshared hid_t H5P_CLS_DATASET_ACCESS_g; 326 extern __gshared hid_t H5P_CLS_DATASET_XFER_g; 327 extern __gshared hid_t H5P_CLS_FILE_MOUNT_g; 328 extern __gshared hid_t H5P_CLS_GROUP_CREATE_g; 329 extern __gshared hid_t H5P_CLS_GROUP_ACCESS_g; 330 extern __gshared hid_t H5P_CLS_DATATYPE_CREATE_g; 331 extern __gshared hid_t H5P_CLS_DATATYPE_ACCESS_g; 332 extern __gshared hid_t H5P_CLS_STRING_CREATE_g; 333 extern __gshared hid_t H5P_CLS_ATTRIBUTE_CREATE_g; 334 extern __gshared hid_t H5P_CLS_OBJECT_COPY_g; 335 extern __gshared hid_t H5P_CLS_LINK_CREATE_g; 336 extern __gshared hid_t H5P_CLS_LINK_ACCESS_g; 337 338 /* Default roperty list IDs */ 339 /* (Internal to library, do not use! Use macros above) */ 340 extern __gshared hid_t H5P_LST_FILE_CREATE_g; 341 extern __gshared hid_t H5P_LST_FILE_ACCESS_g; 342 extern __gshared hid_t H5P_LST_DATASET_CREATE_g; 343 extern __gshared hid_t H5P_LST_DATASET_ACCESS_g; 344 extern __gshared hid_t H5P_LST_DATASET_XFER_g; 345 extern __gshared hid_t H5P_LST_FILE_MOUNT_g; 346 extern __gshared hid_t H5P_LST_GROUP_CREATE_g; 347 extern __gshared hid_t H5P_LST_GROUP_ACCESS_g; 348 extern __gshared hid_t H5P_LST_DATATYPE_CREATE_g; 349 extern __gshared hid_t H5P_LST_DATATYPE_ACCESS_g; 350 extern __gshared hid_t H5P_LST_ATTRIBUTE_CREATE_g; 351 extern __gshared hid_t H5P_LST_OBJECT_COPY_g; 352 extern __gshared hid_t H5P_LST_LINK_CREATE_g; 353 extern __gshared hid_t H5P_LST_LINK_ACCESS_g; 354 355 356 extern __gshared hid_t H5P_CLS_ROOT_ID_g; 357 extern __gshared hid_t H5P_CLS_OBJECT_CREATE_ID_g; 358 extern __gshared hid_t H5P_CLS_FILE_CREATE_ID_g; 359 extern __gshared hid_t H5P_CLS_FILE_ACCESS_ID_g; 360 extern __gshared hid_t H5P_CLS_DATASET_CREATE_ID_g; 361 extern __gshared hid_t H5P_CLS_DATASET_ACCESS_ID_g; 362 extern __gshared hid_t H5P_CLS_DATASET_XFER_ID_g; 363 extern __gshared hid_t H5P_CLS_FILE_MOUNT_ID_g; 364 extern __gshared hid_t H5P_CLS_GROUP_CREATE_ID_g; 365 extern __gshared hid_t H5P_CLS_GROUP_ACCESS_ID_g; 366 extern __gshared hid_t H5P_CLS_DATATYPE_CREATE_ID_g; 367 extern __gshared hid_t H5P_CLS_DATATYPE_ACCESS_ID_g; 368 extern __gshared hid_t H5P_CLS_STRING_CREATE_ID_g; 369 extern __gshared hid_t H5P_CLS_ATTRIBUTE_CREATE_ID_g; 370 extern __gshared hid_t H5P_CLS_OBJECT_COPY_ID_g; 371 extern __gshared hid_t H5P_CLS_LINK_CREATE_ID_g; 372 extern __gshared hid_t H5P_CLS_LINK_ACCESS_ID_g; 373 374 /* Default roperty list IDs */ 375 /* (Internal to library, do not use! Use macros above) */ 376 extern __gshared hid_t H5P_LST_FILE_CREATE_ID_g; 377 extern __gshared hid_t H5P_LST_FILE_ACCESS_ID_g; 378 extern __gshared hid_t H5P_LST_DATASET_CREATE_ID_g; 379 extern __gshared hid_t H5P_LST_DATASET_ACCESS_ID_g; 380 extern __gshared hid_t H5P_LST_DATASET_XFER_ID_g; 381 extern __gshared hid_t H5P_LST_FILE_MOUNT_ID_g; 382 extern __gshared hid_t H5P_LST_GROUP_CREATE_ID_g; 383 extern __gshared hid_t H5P_LST_GROUP_ACCESS_ID_g; 384 extern __gshared hid_t H5P_LST_DATATYPE_CREATE_ID_g; 385 extern __gshared hid_t H5P_LST_DATATYPE_ACCESS_ID_g; 386 extern __gshared hid_t H5P_LST_ATTRIBUTE_CREATE_ID_g; 387 extern __gshared hid_t H5P_LST_OBJECT_COPY_ID_g; 388 extern __gshared hid_t H5P_LST_LINK_CREATE_ID_g; 389 extern __gshared hid_t H5P_LST_LINK_ACCESS_ID_g; 390 391 /* Generic property list routines */ 392 hid_t H5Pcreate_class(hid_t parent, const char *name, H5P_cls_create_func_t cls_create, void *create_data, 393 H5P_cls_copy_func_t cls_copy, void *copy_data, H5P_cls_close_func_t cls_close, void *close_data); 394 char *H5Pget_class_name(hid_t pclass_id); 395 hid_t H5Pcreate(hid_t cls_id); 396 herr_t H5Pregister2(hid_t cls_id, const char *name, size_t size, void *def_value, H5P_prp_create_func_t prp_create, 397 H5P_prp_set_func_t prp_set, H5P_prp_get_func_t prp_get, H5P_prp_delete_func_t prp_del, H5P_prp_copy_func_t prp_copy, 398 H5P_prp_compare_func_t prp_cmp, H5P_prp_close_func_t prp_close); 399 herr_t H5Pinsert2(hid_t plist_id, const char *name, size_t size, 400 void *value, H5P_prp_set_func_t prp_set, H5P_prp_get_func_t prp_get, 401 H5P_prp_delete_func_t prp_delete, H5P_prp_copy_func_t prp_copy, 402 H5P_prp_compare_func_t prp_cmp, H5P_prp_close_func_t prp_close); 403 herr_t H5Pset(hid_t plist_id, const char *name, void *value); 404 htri_t H5Pexist(hid_t plist_id, const char *name); 405 herr_t H5Pget_size(hid_t id, const char *name, size_t *size); 406 herr_t H5Pget_nprops(hid_t id, size_t *nprops); 407 hid_t H5Pget_class(hid_t plist_id); 408 hid_t H5Pget_class_parent(hid_t pclass_id); 409 herr_t H5Pget(hid_t plist_id, const char *name, void * value); 410 htri_t H5Pequal(hid_t id1, hid_t id2); 411 htri_t H5Pisa_class(hid_t plist_id, hid_t pclass_id); 412 int H5Piterate(hid_t id, int *idx, H5P_iterate_t iter_func, 413 void *iter_data); 414 herr_t H5Pcopy_prop(hid_t dst_id, hid_t src_id, const char *name); 415 herr_t H5Premove(hid_t plist_id, const char *name); 416 herr_t H5Punregister(hid_t pclass_id, const char *name); 417 herr_t H5Pclose_class(hid_t plist_id); 418 herr_t H5Pclose(hid_t plist_id); 419 hid_t H5Pcopy(hid_t plist_id); 420 421 /* Object creation property list (OCPL) routines */ 422 herr_t H5Pset_attr_phase_change(hid_t plist_id, uint max_compact, uint min_dense); 423 herr_t H5Pget_attr_phase_change(hid_t plist_id, uint *max_compact, uint *min_dense); 424 herr_t H5Pset_attr_creation_order(hid_t plist_id, uint crt_order_flags); 425 herr_t H5Pget_attr_creation_order(hid_t plist_id, uint *crt_order_flags); 426 herr_t H5Pset_obj_track_times(hid_t plist_id, hbool_t track_times); 427 herr_t H5Pget_obj_track_times(hid_t plist_id, hbool_t *track_times); 428 herr_t H5Pmodify_filter(hid_t plist_id, H5ZFilter filter, 429 int flags, size_t cd_nelmts, 430 const int* cd_values); 431 herr_t H5Pset_filter(hid_t plist_id, H5ZFilter filter, int flags, size_t cd_nelmts, const int* c_values); 432 int H5Pget_nfilters(hid_t plist_id); 433 H5ZFilter H5Pget_filter2(hid_t plist_id, uint filter, 434 int *flags/*out*/, 435 size_t *cd_nelmts/*out*/, 436 uint* cd_values/*out*/, 437 size_t namelen, char* name, 438 uint *filter_config /*out*/); 439 herr_t H5Pget_filter_by_id2(hid_t plist_id, H5ZFilter id, 440 uint *flags/*out*/, size_t *cd_nelmts/*out*/, 441 int* cd_values/*out*/, size_t namelen, char* name/*out*/, 442 int *filter_config/*out*/); 443 htri_t H5Pall_filters_avail(hid_t plist_id); 444 herr_t H5Premove_filter(hid_t plist_id, H5ZFilter filter); 445 herr_t H5Pset_deflate(hid_t plist_id, int aggression); 446 herr_t H5Pset_fletcher32(hid_t plist_id); 447 448 /* File creation property list (FCPL) routines */ 449 herr_t H5Pget_version(hid_t plist_id, uint *boot/*out*/, 450 uint *freelist/*out*/, uint *stab/*out*/, 451 uint *shhdr/*out*/); 452 herr_t H5Pset_userblock(hid_t plist_id, hsize_t size); 453 herr_t H5Pget_userblock(hid_t plist_id, hsize_t *size); 454 herr_t H5Pset_sizes(hid_t plist_id, size_t sizeof_addr, 455 size_t sizeof_size); 456 herr_t H5Pget_sizes(hid_t plist_id, size_t *sizeof_addr/*out*/, 457 size_t *sizeof_size/*out*/); 458 herr_t H5Pset_sym_k(hid_t plist_id, uint ik, uint lk); 459 herr_t H5Pget_sym_k(hid_t plist_id, uint *ik/*out*/, uint *lk/*out*/); 460 herr_t H5Pset_istore_k(hid_t plist_id, uint ik); 461 herr_t H5Pget_istore_k(hid_t plist_id, uint *ik/*out*/); 462 herr_t H5Pset_shared_mesg_nindexes(hid_t plist_id, uint nindexes); 463 herr_t H5Pget_shared_mesg_nindexes(hid_t plist_id, uint *nindexes); 464 herr_t H5Pset_shared_mesg_index(hid_t plist_id, uint index_num, uint mesg_type_flags, uint min_mesg_size); 465 herr_t H5Pget_shared_mesg_index(hid_t plist_id, uint index_num, uint *mesg_type_flags, uint *min_mesg_size); 466 herr_t H5Pset_shared_mesg_phase_change(hid_t plist_id, uint max_list, uint min_btree); 467 herr_t H5Pget_shared_mesg_phase_change(hid_t plist_id, uint *max_list, uint *min_btree); 468 469 /* File access property list (FAPL) routines */ 470 herr_t H5Pset_alignment(hid_t fapl_id, hsize_t threshold, 471 hsize_t alignment); 472 herr_t H5Pget_alignment(hid_t fapl_id, hsize_t *threshold/*out*/, 473 hsize_t *alignment/*out*/); 474 herr_t H5Pset_driver(hid_t plist_id, hid_t driver_id, 475 const void *driver_info); 476 hid_t H5Pget_driver(hid_t plist_id); 477 void *H5Pget_driver_info(hid_t plist_id); 478 herr_t H5Pset_family_offset(hid_t fapl_id, hsize_t offset); 479 herr_t H5Pget_family_offset(hid_t fapl_id, hsize_t *offset); 480 herr_t H5Pset_cache(hid_t plist_id, int mdc_nelmts, 481 size_t rdcc_nslots, size_t rdcc_nbytes, 482 double rdcc_w0); 483 herr_t H5Pget_cache(hid_t plist_id, 484 int *mdc_nelmts, /* out */ 485 size_t *rdcc_nslots/*out*/, 486 size_t *rdcc_nbytes/*out*/, double *rdcc_w0); 487 herr_t H5Pset_gc_references(hid_t fapl_id, uint gc_ref); 488 herr_t H5Pget_gc_references(hid_t fapl_id, uint *gc_ref/*out*/); 489 herr_t H5Pset_fclose_degree(hid_t fapl_id, H5F_close_degree_t degree); 490 herr_t H5Pget_fclose_degree(hid_t fapl_id, H5F_close_degree_t *degree); 491 herr_t H5Pset_meta_block_size(hid_t fapl_id, hsize_t size); 492 herr_t H5Pget_meta_block_size(hid_t fapl_id, hsize_t *size/*out*/); 493 herr_t H5Pset_sieve_buf_size(hid_t fapl_id, size_t size); 494 herr_t H5Pget_sieve_buf_size(hid_t fapl_id, size_t *size/*out*/); 495 herr_t H5Pset_small_data_block_size(hid_t fapl_id, hsize_t size); 496 herr_t H5Pget_small_data_block_size(hid_t fapl_id, hsize_t *size/*out*/); 497 herr_t H5Pset_libver_bounds(hid_t plist_id, H5F_libver_t low, 498 H5F_libver_t high); 499 herr_t H5Pget_libver_bounds(hid_t plist_id, H5F_libver_t *low, 500 H5F_libver_t *high); 501 herr_t H5Pset_elink_file_cache_size(hid_t plist_id, uint efc_size); 502 herr_t H5Pget_elink_file_cache_size(hid_t plist_id, uint *efc_size); 503 herr_t H5Pset_file_image(hid_t fapl_id, void *buf_ptr, size_t buf_len); 504 herr_t H5Pget_file_image(hid_t fapl_id, void **buf_ptr_ptr, size_t *buf_len_ptr); 505 version(h5parallel) herr_t H5Pset_core_write_tracking(hid_t fapl_id, hbool_t is_enabled, size_t page_size); 506 version(h5parallel) herr_t H5Pget_core_write_tracking(hid_t fapl_id, hbool_t *is_enabled, size_t *page_size); 507 herr_t H5Pset_layout(hid_t plist_id, H5DLayout layout); 508 H5DLayout H5Pget_layout(hid_t plist_id); 509 herr_t H5Pset_chunk(hid_t plist_id, int ndims, const hsize_t *dim/*ndims*/); 510 int H5Pget_chunk(hid_t plist_id, int max_ndims, hsize_t *dim/*out*/); 511 herr_t H5Pset_external(hid_t plist_id, const char *name, off_t offset, 512 hsize_t size); 513 int H5Pget_external_count(hid_t plist_id); 514 herr_t H5Pget_external(hid_t plist_id, uint idx, size_t name_size, 515 char *name/*out*/, off_t *offset/*out*/, 516 hsize_t *size/*out*/); 517 herr_t H5Pset_szip(hid_t plist_id, uint options_mask, uint pixels_per_block); 518 herr_t H5Pset_shuffle(hid_t plist_id); 519 herr_t H5Pset_nbit(hid_t plist_id); 520 herr_t H5Pset_scaleoffset(hid_t plist_id, H5Z_SO_scale_type_t scale_type, int scale_factor); 521 herr_t H5Pset_fill_value(hid_t plist_id, hid_t type_id, const void *value); 522 herr_t H5Pget_fill_value(hid_t plist_id, hid_t type_id, void *value/*out*/); 523 herr_t H5Pfill_value_defined(hid_t plist, H5D_fill_value_t *status); 524 herr_t H5Pset_alloc_time(hid_t plist_id, H5DAllocTime alloc_time); 525 herr_t H5Pget_alloc_time(hid_t plist_id, H5DAllocTime *alloc_time/*out*/); 526 herr_t H5Pset_fill_time(hid_t plist_id, H5D_fill_time_t fill_time); 527 herr_t H5Pget_fill_time(hid_t plist_id, H5D_fill_time_t *fill_time/*out*/); 528 529 /* Dataset access property list (DAPL) routines */ 530 herr_t H5Pset_chunk_cache(hid_t dapl_id, size_t rdcc_nslots, 531 size_t rdcc_nbytes, double rdcc_w0); 532 herr_t H5Pget_chunk_cache(hid_t dapl_id, 533 size_t *rdcc_nslots/*out*/, 534 size_t *rdcc_nbytes/*out*/, 535 double *rdcc_w0/*out*/); 536 537 /* Dataset xfer property list (DXPL) routines */ 538 herr_t H5Pset_data_transform(hid_t plist_id, const char* expression); 539 ssize_t H5Pget_data_transform(hid_t plist_id, char* expression /*out*/, size_t size); 540 herr_t H5Pset_buffer(hid_t plist_id, size_t size, void *tconv, 541 void *bkg); 542 size_t H5Pget_buffer(hid_t plist_id, void **tconv/*out*/, 543 void **bkg/*out*/); 544 herr_t H5Pset_preserve(hid_t plist_id, hbool_t status); 545 int H5Pget_preserve(hid_t plist_id); 546 herr_t H5Pset_edc_check(hid_t plist_id, H5Z_EDC_t check); 547 H5Z_EDC_t H5Pget_edc_check(hid_t plist_id); 548 herr_t H5Pset_filter_callback(hid_t plist_id, H5Z_filter_func_t func, 549 void* op_data); 550 herr_t H5Pset_btree_ratios(hid_t plist_id, double left, double middle, 551 double right); 552 herr_t H5Pget_btree_ratios(hid_t plist_id, double *left/*out*/, 553 double *middle/*out*/, 554 double *right/*out*/); 555 herr_t H5Pset_hyper_vector_size(hid_t fapl_id, size_t size); 556 herr_t H5Pget_hyper_vector_size(hid_t fapl_id, size_t *size/*out*/); 557 herr_t H5Pset_type_conv_cb(hid_t dxpl_id, H5T_conv_except_func_t op, void* operate_data); 558 herr_t H5Pget_type_conv_cb(hid_t dxpl_id, H5T_conv_except_func_t *op, void** operate_data); 559 version(h5parallel) 560 { 561 herr_t H5Pget_mpio_actual_chunk_opt_mode(hid_t plist_id, H5D_mpio_actual_chunk_opt_mode_t *actual_chunk_opt_mode); 562 herr_t H5Pget_mpio_actual_io_mode(hid_t plist_id, H5D_mpio_actual_io_mode_t *actual_io_mode); 563 herr_t H5Pget_mpio_no_collective_cause(hid_t plist_id, uint32_t *local_no_collective_cause, uint32_t *global_no_collective_cause); 564 } 565 566 /* Link creation property list (LCPL) routines */ 567 herr_t H5Pset_create_intermediate_group(hid_t plist_id, uint crt_intmd); 568 herr_t H5Pget_create_intermediate_group(hid_t plist_id, uint *crt_intmd /*out*/); 569 570 /* Group creation property list (GCPL) routines */ 571 herr_t H5Pset_local_heap_size_hint(hid_t plist_id, size_t size_hint); 572 herr_t H5Pget_local_heap_size_hint(hid_t plist_id, size_t *size_hint /*out*/); 573 herr_t H5Pset_link_phase_change(hid_t plist_id, uint max_compact, uint min_dense); 574 herr_t H5Pget_link_phase_change(hid_t plist_id, uint *max_compact /*out*/, uint *min_dense /*out*/); 575 herr_t H5Pset_est_link_info(hid_t plist_id, uint est_num_entries, uint est_name_len); 576 herr_t H5Pget_est_link_info(hid_t plist_id, uint *est_num_entries /* out */, uint *est_name_len /* out */); 577 herr_t H5Pset_link_creation_order(hid_t plist_id, uint crt_order_flags); 578 herr_t H5Pget_link_creation_order(hid_t plist_id, uint *crt_order_flags /* out */); 579 580 /* String creation property list (STRCPL) routines */ 581 herr_t H5Pset_char_encoding(hid_t plist_id, H5TCset encoding); 582 herr_t H5Pget_char_encoding(hid_t plist_id, H5TCset *encoding /*out*/); 583 584 /* Link access property list (LAPL) routines */ 585 herr_t H5Pset_nlinks(hid_t plist_id, size_t nlinks); 586 herr_t H5Pget_nlinks(hid_t plist_id, size_t *nlinks); 587 herr_t H5Pset_elink_prefix(hid_t plist_id, const char *prefix); 588 ssize_t H5Pget_elink_prefix(hid_t plist_id, char *prefix, size_t size); 589 hid_t H5Pget_elink_fapl(hid_t lapl_id); 590 herr_t H5Pset_elink_fapl(hid_t lapl_id, hid_t fapl_id); 591 herr_t H5Pset_elink_acc_flags(hid_t lapl_id, uint flags); 592 herr_t H5Pget_elink_acc_flags(hid_t lapl_id, uint *flags); 593 /++ 594 herr_t H5Pset_elink_cb(hid_t lapl_id, H5L_elink_traverse_t func, void *op_data); 595 herr_t H5Pget_elink_cb(hid_t lapl_id, H5L_elink_traverse_t *func, void **op_data); 596 +/ 597 598 /* Object copy property list (OCPYPL) routines */ 599 herr_t H5Pset_copy_object(hid_t plist_id, uint crt_intmd); 600 herr_t H5Pget_copy_object(hid_t plist_id, uint *crt_intmd /*out*/); 601 herr_t H5Padd_merge_committed_dtype_path(hid_t plist_id, const char *path); 602 herr_t H5Pfree_merge_committed_dtype_paths(hid_t plist_id); 603 /++ 604 herr_t H5Pset_mcdt_search_cb(hid_t plist_id, H5O_mcdt_search_cb_t func, void *op_data); 605 herr_t H5Pget_mcdt_search_cb(hid_t plist_id, H5O_mcdt_search_cb_t *func, void **op_data); 606 +/ 607 608 herr_t H5Rcreate(void *_ref, hid_t loc_id, const char *name, H5RType reftype, hid_t space_id); 609 hid_t H5Rdereference(hid_t dataset, H5RType ref_type, const void *_ref); 610 hid_t H5Rget_region(hid_t dataset, H5RType ref_type, const void *_ref); 611 herr_t H5Rget_obj_type2(hid_t id, H5RType ref_type, const void *_ref, H5OType *obj_type); 612 ssize_t H5Rget_name(hid_t loc_id, H5RType ref_type, const void *_ref, char *name/*out*/, size_t size); 613 hid_t H5Screate(H5SClass type); 614 hid_t H5Screate_simple(int rank, const hsize_t *dims, 615 const hsize_t *maxdims); 616 herr_t H5Sset_extent_simple(hid_t space_id, int rank, 617 const hsize_t *dims, 618 const hsize_t *max); 619 hid_t H5Scopy(hid_t space_id); 620 herr_t H5Sclose(hid_t space_id); 621 herr_t H5Sencode(hid_t obj_id, void *buf, size_t *nalloc); 622 hid_t H5Sdecode(const void *buf); 623 hssize_t H5Sget_simple_extent_npoints(hid_t space_id); 624 int H5Sget_simple_extent_ndims(hid_t space_id); 625 int H5Sget_simple_extent_dims(hid_t space_id, hsize_t *dims, 626 hsize_t *maxdims); 627 htri_t H5Sis_simple(hid_t space_id); 628 hssize_t H5Sget_select_npoints(hid_t spaceid); 629 herr_t H5Sselect_hyperslab(hid_t space_id, H5SSeloper op, 630 const hsize_t *start, 631 const hsize_t *_stride, 632 const hsize_t *count, 633 const hsize_t *_block); 634 hid_t H5Scombine_hyperslab(hid_t space_id, H5SSeloper op, 635 const hsize_t *start, 636 const hsize_t *_stride, 637 const hsize_t *count, 638 const hsize_t *_block); 639 herr_t H5Sselect_select(hid_t space1_id, H5SSeloper op, 640 hid_t space2_id); 641 hid_t H5Scombine_select(hid_t space1_id, H5SSeloper op, 642 hid_t space2_id); 643 herr_t H5Sselect_elements(hid_t space_id, H5SSeloper op, 644 size_t num_elem, const hsize_t *coord); 645 H5SClass H5Sget_simple_extent_type(hid_t space_id); 646 herr_t H5Sset_extent_none(hid_t space_id); 647 herr_t H5Sextent_copy(hid_t dst_id,hid_t src_id); 648 htri_t H5Sextent_equal(hid_t sid1, hid_t sid2); 649 herr_t H5Sselect_all(hid_t spaceid); 650 herr_t H5Sselect_none(hid_t spaceid); 651 herr_t H5Soffset_simple(hid_t space_id, const hssize_t *offset); 652 htri_t H5Sselect_valid(hid_t spaceid); 653 hssize_t H5Sget_select_hyper_nblocks(hid_t spaceid); 654 hssize_t H5Sget_select_elem_npoints(hid_t spaceid); 655 herr_t H5Sget_select_hyper_blocklist(hid_t spaceid, hsize_t startblock, 656 hsize_t numblocks, hsize_t *buf); 657 herr_t H5Sget_select_elem_pointlist(hid_t spaceid, hsize_t startpoint, 658 hsize_t numpoints, hsize_t *buf); 659 herr_t H5Sget_select_bounds(hid_t spaceid, hsize_t *start, 660 hsize_t *end); 661 H5S_sel_type H5Sget_select_type(hid_t spaceid); 662 663 664 /* Operations defined on all datatypes */ 665 hid_t H5Tcreate(H5TClass type, size_t size); 666 hid_t H5Tcopy(hid_t type_id); 667 herr_t H5Tclose(hid_t type_id); 668 htri_t H5Tequal(hid_t type1_id, hid_t type2_id); 669 herr_t H5Tlock(hid_t type_id); 670 herr_t H5Tcommit2(hid_t loc_id, const char *name, hid_t type_id, 671 hid_t lcpl_id, hid_t tcpl_id, hid_t tapl_id); 672 hid_t H5Topen2(hid_t loc_id, const char *name, hid_t tapl_id); 673 herr_t H5Tcommit_anon(hid_t loc_id, hid_t type_id, hid_t tcpl_id, hid_t tapl_id); 674 hid_t H5Tget_create_plist(hid_t type_id); 675 htri_t H5Tcommitted(hid_t type_id); 676 herr_t H5Tencode(hid_t obj_id, void *buf, size_t *nalloc); 677 hid_t H5Tdecode(const void *buf); 678 679 /* Operations defined on compound datatypes */ 680 herr_t H5Tinsert(hid_t parent_id, const char *name, size_t offset, 681 hid_t member_id); 682 herr_t H5Tpack(hid_t type_id); 683 684 /* Operations defined on enumeration datatypes */ 685 hid_t H5Tenum_create(hid_t base_id); 686 herr_t H5Tenum_insert(hid_t type, const char *name, const void *value); 687 herr_t H5Tenum_nameof(hid_t type, const void *value, char *name/*out*/, 688 size_t size); 689 herr_t H5Tenum_valueof(hid_t type, const char *name, 690 void *value/*out*/); 691 692 /* Operations defined on variable-length datatypes */ 693 hid_t H5Tvlen_create(hid_t base_id); 694 695 /* Operations defined on array datatypes */ 696 hid_t H5Tarray_create2(hid_t base_id, uint ndims, const hsize_t[] dim); 697 int H5Tget_array_ndims(hid_t type_id); 698 int H5Tget_array_dims2(hid_t type_id, hsize_t* dims); 699 700 /* Operations defined on opaque datatypes */ 701 herr_t H5Tset_tag(hid_t type, const char *tag); 702 char *H5Tget_tag(hid_t type); 703 704 /* Querying property values */ 705 hid_t H5Tget_super(hid_t type); 706 H5TClass H5Tget_class(hid_t type_id); 707 htri_t H5Tdetect_class(hid_t type_id, H5TClass cls); 708 size_t H5Tget_size(hid_t type_id); 709 H5TByteOrder H5Tget_order(hid_t type_id); 710 size_t H5Tget_precision(hid_t type_id); 711 int H5Tget_offset(hid_t type_id); 712 herr_t H5Tget_pad(hid_t type_id, H5T_pad_t *lsb/*out*/, 713 H5T_pad_t *msb/*out*/); 714 H5T_sign_t H5Tget_sign(hid_t type_id); 715 herr_t H5Tget_fields(hid_t type_id, size_t *spos/*out*/, 716 size_t *epos/*out*/, size_t *esize/*out*/, 717 size_t *mpos/*out*/, size_t *msize/*out*/); 718 size_t H5Tget_ebias(hid_t type_id); 719 H5T_norm_t H5Tget_norm(hid_t type_id); 720 H5T_pad_t H5Tget_inpad(hid_t type_id); 721 H5TString H5Tget_strpad(hid_t type_id); 722 int H5Tget_nmembers(hid_t type_id); 723 char *H5Tget_member_name(hid_t type_id, uint membno); 724 int H5Tget_member_index(hid_t type_id, const char *name); 725 size_t H5Tget_member_offset(hid_t type_id, uint membno); 726 H5TClass H5Tget_member_class(hid_t type_id, uint membno); 727 hid_t H5Tget_member_type(hid_t type_id, uint membno); 728 herr_t H5Tget_member_value(hid_t type_id, uint membno, void *value/*out*/); 729 H5TCset H5Tget_cset(hid_t type_id); 730 htri_t H5Tis_variable_str(hid_t type_id); 731 hid_t H5Tget_native_type(hid_t type_id, H5TDirection direction); 732 733 /* Setting property values */ 734 herr_t H5Tset_size(hid_t type_id, size_t size); 735 herr_t H5Tset_order(hid_t type_id, H5TByteOrder order); 736 herr_t H5Tset_precision(hid_t type_id, size_t prec); 737 herr_t H5Tset_offset(hid_t type_id, size_t offset); 738 herr_t H5Tset_pad(hid_t type_id, H5T_pad_t lsb, H5T_pad_t msb); 739 herr_t H5Tset_sign(hid_t type_id, H5T_sign_t sign); 740 herr_t H5Tset_fields(hid_t type_id, size_t spos, size_t epos, 741 size_t esize, size_t mpos, size_t msize); 742 herr_t H5Tset_ebias(hid_t type_id, size_t ebias); 743 herr_t H5Tset_norm(hid_t type_id, H5T_norm_t norm); 744 herr_t H5Tset_inpad(hid_t type_id, H5T_pad_t pad); 745 herr_t H5Tset_cset(hid_t type_id, H5TCset cset); 746 herr_t H5Tset_strpad(hid_t type_id, H5TString strpad); 747 748 /* Type conversion database */ 749 herr_t H5Tregister(H5T_pers_t pers, const char *name, hid_t src_id, 750 hid_t dst_id, H5T_conv_t func); 751 herr_t H5Tunregister(H5T_pers_t pers, const char *name, hid_t src_id, 752 hid_t dst_id, H5T_conv_t func); 753 H5T_conv_t H5Tfind(hid_t src_id, hid_t dst_id, H5T_cdata_t **pcdata); 754 htri_t H5Tcompiler_conv(hid_t src_id, hid_t dst_id); 755 herr_t H5Tconvert(hid_t src_id, hid_t dst_id, size_t nelmts, 756 void *buf, void *background, hid_t plist_id); 757 herr_t H5Zregister(const void *cls); 758 herr_t H5Zunregister(H5ZFilter id); 759 htri_t H5Zfilter_avail(H5ZFilter id); 760 herr_t H5Zget_filter_info(H5ZFilter filter, uint* filter_config_flags); 761 }